1. Field of the Invention
The present invention relates to a data processing apparatus having a plurality of domains in which devices of the data processing apparatus can operate, and more particularly to power management techniques within such a data processing apparatus.
2. Description of the Prior Art
A data processing apparatus will typically include one or more master devices, for example a central processing unit (CPU), a Direct. Memory Access (DMA) engine, a hardware accelerator, etc for performing sequences of operations. When performing such operations, the master devices will typically have access to one or more slave devices, for example memory devices, peripheral devices, etc. Program code defining the sequence of operations, and/or data required when performing such operations, will be stored within memory, either internal to the data processing apparatus, or externally to the data processing apparatus. The term “data values” will be used herein to collectively identify program code and/or data required when executing such code.
There arise many instances where the data values associated with one application are sensitive data values that should not be accessible by other applications running on devices of the data processing apparatus. It is clearly important in such situations to ensure that such sensitive data is kept secure so that it cannot be accessed by other applications that may be loaded on to the data processing apparatus, for example hacking applications that have been loaded on to the data processing apparatus with the purpose of seeking to access that sensitive data.
It has traditionally been the job of the operating system developer to ensure that the operating system provides sufficient security to ensure that the secure data of one application cannot be accessed by other applications running under the control of the operating system. However, as systems become more complex, the general trend is for operating systems to become larger and more complex, and in such situations it becomes increasingly difficult to ensure sufficient security within the operating system itself. To seek to alleviate the reliance on operating system security it is known to provide a system in which the data processing apparatus is provided with separate domains, these domains providing a mechanism for handling security at the hardware level. Such a system is described for example in commonly assigned co-pending U.S. patent application Ser. No. 10/714,561, the contents of which are herein incorporated by reference, this application describing a system having a secure domain and a non-secure domain. In that system, the non-secure and secure domains in effect establish separate worlds, the secure domain providing a trusted execution space separated by hardware enforced boundaries from other execution spaces, and likewise the non-secure domain providing a non-trusted execution space.
Whilst such systems have been designed with security in mind, it should be noted that security issues are not the only reason for using a data processing apparatus having such domains, and indeed the different domains provided by the data processing apparatus may be used primarily for other purposes. For example, robustness and reliability may be improved through use of such domains. Even if the data in a first domain is not sensitive in the security sense, it may be data which desirably should be protected from being overwritten by bugs in the rest of the platform, for example because such overwriting may cause some critical operation not to happen. By having the hardware split resulting from the use of multiple domains, the software in that first domain should remain intact even if the software executing in another domain operates incorrectly due to a bug.
Within such a data processing apparatus, it is typically the case that not all of the hardware resources can be used at any particular point in time. As an example, considering the earlier-described system that provides a secure domain and a non-secure domain, the system will typically be arranged such that in the non-secure domain, a device within the data processing apparatus will not have access to secure data associated with the secure domain. Similarly, certain peripheral devices may only be used by a master device operating in the secure domain.
In some situations, power consumption of the data processing apparatus can be a significant concern, and in such situations it is desirable to provide a data processing apparatus having low power consumption requirements.
In the different technical field of software virtualisation, the IBM article entitled “Supporting Isolation for Fault and Power Management with Fully Virtualized Memory Systems” by F Rawson, Jan. 3, 2004, appearing at web address www.research.ibm.com/arl/publications/papers/reverse_mapping.pdf, describes a power management technique that can be used in fully virtualized memory systems. In such fully virtualized systems, a hypervisor layer is provided that operates directly on the hardware and supports the execution of multiple operating systems in isolation on a single machine. The hypervisor layer enables multiple operating systems to run at once, and seeks to hide one operating system from the other. In the above document, the hypervisor layer uses a standard reverse mapping technique to support power management, especially cooperative power management of memory. Reverse mapping is a technique often used in operating systems to enable them to track efficiently which address spaces use which physical pages of memory. With the information provided by the reverse mapping, the hypervisor layer can implement memory power management techniques that take the behaviour and activity levels of the system images running within the virtual machines into account.
The approach described in the IBM article is complex, since it requires the reverse mapping technique to be implemented to produce certain information, and then requires software to be written to perform the necessary power management routines dependent on that information. Such a technique is hence costly in terms of the software that needs to be provided, and can adversely impact performance due to the time taken to run such power management software. Additionally, such a technique does not assist in achieving power saving benefits in a data processing apparatus of the earlier described type having a plurality of domains where certain portions of the slave devices will not be used by master devices operating in particular domains.
Accordingly, it would be desirable to provide a technique for reducing power consumption in a data processing apparatus having a plurality of domains in which devices of the data processing apparatus can operate.